其他
一个案例、6个步骤全程详解A/B测试,看这篇就够了!
导读:本文将利用一个例子来探索设计、运行和分析对照实验的基本原则。这些原则适用于各种软件开发环境,包括网页服务器和浏览器、桌面应用程序、移动端应用程序、游戏主机、虚拟个人助理等。为了叙述尽量简单和具体,我们将专注于一个网站优化的例子。
所有访问该网站的用户。这是可行的,但会带来噪声:未进入结账页面的用户也会被包括进来。由于我们的改动发生在结账页面,这些用户不会受到任何影响。将他们排除在外可以提高A/B测试的灵敏度。 仅包括完成付款的用户。这是不正确的,因为它假设这个改动只会影响付款额度,而不影响完成付款的用户的比例。如果更多的用户付款,那么即使总营收增加,人均营收也可能会降低。 仅包括开始付款流程的用户。考虑到改动发生在漏斗中的环节,这是最好的选择。我们包括了所有潜在受影响的用户,且排除了不被影响但会稀释实验结果的那部分用户(从未进入结账页面的用户)。
随机化单元是什么? 我们的目标群体是什么? 实验需要多大的样本量? 实验需要运行多久?
如果用购买指示符(即用户买/没买,无论买了多少)而不是人均营收作为OEC,那么标准差会更小,意味着更少的用户就能达到同样的灵敏度。 如果提高实际显著水平,比如我们不再关心1%的变化,而只关心更大的变化,由于更大变化更容易被检测到,我们就可以缩小样本量。 如果想用更小的p值阈值,比如0.01,以使得我们能更确信结果有差异而拒绝零假设,则需要增大样本量。
实验的安全性如何?对于一些重大的改动,由于无法确定用户会有什么反应,你可能想要先从一小部分用户开始测试。这个考量不影响实验最终所需样本量,但是会影响放量策略。 这个实验是否需要和其他实验共享流量?如果是,怎么平衡流量需求?概括来说,如果有其他的变动也要测试,可以选择同时运行或者依序运行。如果必须在多个同时运行的测试间分割流量,那么每个测试将只能得到更小的流量。
更多的用户:对于线上实验,用户随着时间流入实验,时间越长,用户数越多。统计功效通常也会随之提高(当测量累积指标时会有例外,比如会话数,其方差也随着增大,统计功效则未必会随用户数增加而提高)。考虑到同样的用户会反复访问,用户随时间的累积可能是次线性的:第一天有N个用户,两天的总用户数会小于2N,因为部分用户这两天都会来访问。 周内效应:周末访问的用户群体可能和周中访问的不一样。即使同一用户在周中和周末也可能有不一样的表现。确保实验能覆盖一周的周期是很重要的。我们建议实验至少要运行一整周。 季节性:还有一些用户可能有其他不同表现的重要时期需要考虑,比如节假日。如果你的用户遍布全球,美国假期和非美国假期可能会有影响。例如,礼品卡可能在圣诞期间销量很好,但在一年的其他时期则不行。这被称为外部有效性,即实验结果可以被归纳推广到什么程度,这里指被推广到其他时间段。 初始和新奇效应:有些实验在初始阶段有较大或较小的效应,并在之后的一段时间趋于稳定。例如,用户可能会尝试一个新的很亮眼的按钮,然后发现它并不好用,这个按钮的点击量则会随着时间而减少。而有些新功能会有一个被接受的过程,需要一定的时间来建立用户基础。
随机化单元是用户。 我们以全体用户为目标,并分析那些访问结账页面的用户。 为了能以80%的统计功效检测出至少1%的人均营收的变化,我们会通过功效分析来确定样本量。 根据所需样本量,实验要按34%/33%/33%的比例将流量分配到对照组/实验组1/实验组2,且至少运行4天。为了确保了解周内效应,我们将运行实验一整周,如果发现新奇效应或初始效应,则可能需要运行更长时间。
工具化日志记录来获得用户和网站互动的日志数据,以及这些互动是属于哪个实验的。 基础设施来支持实验的运行,从实验配置到变体分配。
与可信度相关的护栏指标,比如对照组和实验组的样本量应该和实验构建时的预期一致,或者它们有同样的缓存命中率。 机构的护栏指标,比如延迟指标。延迟指标对机构很重要,而且在很多实验中不应该有变化。对于结账页面的实验,如果延迟改变了会令人感到意外。
你是否需要在不同的指标之间权衡取舍?如用户互动度增加,但营收降低,应该发布吗?另一个例子是,如果CPU利用率增加,运行服务的成本却可能超过这一变化带来的效益。 发布改动的成本是什么?包括:
发布之前完整搭建这个功能的成本。有些功能可能在实验之前就已经完全建好。对于这种情况,从1%到100%的发布没有额外的成本。也有其他的情况。像我们的例子,实现“画门”是低成本的,但实现完整的优惠券系统则需要付出很高的成本。 发布之后持续维护的工程成本。维护新的代码可能更加昂贵。新代码容易有更多漏洞,且边界情况的测试不完善。如果新代码的复杂度更高,那么在其基础上搭建新的改动会有更多的阻力和成本。
结果不是统计显著的,显然也不是实际显著的。很容易得出结论:该改动没有什么影响。可以做迭代或者放弃。 结果是统计显著的,也是实际显著的。同样很容易得出结论:发布! 结果是统计显著的,但不是实际显著的。这时候,你对差异值的量级是有把握的,但是这个量级可能不足以胜过其他因素,比如成本。这一改动也许不值得发布。 跟例1一样,这是个中性的例子。然而,这里置信区间越过了实际显著的阈值。如果运行一个实验然后发现它可能增加或降低10%的营收,你真的会接受这个实验结果并认为结果是中性的吗?更好的说法是没有足够的统计功效来得到一个有力的结论,也就是说,没有足够的数据来支持发布或不发布的决策。对于这个结果,我们推荐通过运行跟进实验来测试更多的单元,以获得更大的统计功效。 结果可能是实际显著的,但不是统计显著的。即便最好的猜测是这个改动有影响,也很有可能实际上完全没有影响。从测量的角度来说,最好的建议是重复这个实验,同时增大统计功效以提高结果的灵敏度。 这个结果是统计显著的,并且可能是实际显著的。像例5一样,有可能这个改动并不是实际显著的。因此,跟前面几个例子一样,我们推荐重复实验并增大统计功效。不过从发布/不发布的决策角度来说,选择发布是一个合理的决定。
在公众号对话框输入以下关键词查看更多优质内容!
PPT | 读书 | 书单 | 硬核 | 干货 | 讲明白 | 神操作大数据 | 云计算 | 数据库 | Python | 爬虫 | 可视化AI | 人工智能 | 机器学习 | 深度学习 | NLP5G | 中台 | 用户画像 | 1024 | 数学 | 算法 | 数字孪生
据统计,99%的大咖都关注了这个公众号👇